package homework.homework01.entry;


import homework.homework01.domain.Student;

public class Entry {

    public static void main(String[] args) {

        // 创建存储学生对象的数组，并且将学生对象添加到数组中
        Student[] students = new Student[5];
        students[0] = new Student("郭靖", 175);
        students[1] = new Student("黄蓉", 155);
        students[2] = new Student("黄药师", 180);
        students[3] = new Student("欧阳锋", 170);
        students[4] = new Student("穆念慈", 160);

        // 调用sort方法排序
        sort(students);

        // 遍历集合
        for (int x = 0; x < students.length; x++) {
            System.out.println(students[x]);
        }

    }

    // 排序方法
    public static void sort(Student[] students) {
        // 补全代码
        /*//1、使用冒泡排序进行比较两个学生的身高
        //轮数(i)    交换次数    占位j
        //第一轮 0     4         0,1,2,3
        //第二轮 1     3          1,2,3
        // 第三轮 2     2          2 3
        //第四轮 3     1           3
        //遍历数组进行学生数组获取每一个学生对象
        for (int i = 0; i < students.length-1; i++) {
            //内循环记录要交换的次数
            for (int j = 0; j < students.length -1; j++) {
                //对身高进行比较
                if (students[j].getHeight() > students[j+1].getHeight()){
                    //进行数据交换
                    Student student = students[j];
                    students[j] = students[j + 1];
                    students[j+1] = student;
                }
            }
        }*/

        //2、使用选择排比较两个学生的身高(优化方法---->找出后面最小值的索引,然后进行交换,只交换一次)
        //遍历数组获取每一个学生对象
        //进行推理      0 1 2 3 4
        //轮数       选择次数      j的占位------>传统的
        //第一轮 0     4         1,2,3,4
        //第二轮 1     3         2,3,4
        //第三轮 2     2         3,4
        //第四轮 3     1         4
        for (int i = 0; i < students.length - 1; i++) {
            //定义一个变量记录当前最小值,假设第一个就是最小值
            int min = i;
            //内存换进行选择处理
            for (int j = i + 1; j < students.length; j++) {
                //进行比较student与j记录的身高,如果有比student小的,就进行交换索引
                if (students[min].getHeight() > students[j].getHeight()){
                    min = j;
                }
            }
            if (min != i){
                Student student = students[i];
                students[i] = students[min];
                students[min] = student;
            }

        }
    }

}
